home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
MacWorld: Complete Mac Interactive
/
Macworld Complete Mac Interactive CD)(1994).iso
/
Software
/
More Shareware⁄Freeware
/
NIH Image 1.55 f (non fpu)
/
Macros
/
Serial I⁄O
< prev
next >
Wrap
Text File
|
1993-11-24
|
4KB
|
157 lines
macro 'Open Serial Port [O]';
begin
RequiresVersion(1.48);
OpenSerial('9600 baud,no parity,eight data,one stop');
end;
macro 'Put Serial [P]';
begin
PutSerial(GetString('Enter a string:'));
end;
macro 'Serial Output Test [T]';
var
i:integer;
begin
SetCursor('Watch');
for i:=1 to 10 do
PutSerial('The is line ',i:3,chr(13),chr(10));
end;
end;
macro 'Get Serial and Echo [G]';
var
i:integer;
ch:string; {actually one char}
begin
ShowMessage('Press mouse button to abort.');
SetCursor('Watch');
repeat until GetSerial=''; {Flush input buffer}
repeat
ch:=GetSerial; {returns null string if input buffer empty}
if ch<>'' then ShowMessage('char="',ch,'" (',ord(ch):1,')');
PutSerial(ch);
if ch=chr(13) then PutSerial(chr(10)); {if return send line feed}
until button;
end;
macro 'Capture Serial Input [C]';
{Captures serial input to a text window.}
var
x,y,width,height,cc,tc:integer;
ch:string; {actually one char}
begin
RequiresVersion(1.52);
OpenSerial('9600');
NewTextWindow('Serial Input');
cc:=0; tc:=0;
ShowMessage('Use command-period to abort');
SetCursor('Watch');
repeat
repeat tc:=tc+1; ch:=GetSerial until (ch<>'') or button;
write(ch);
cc:=cc+1;
until button;
end;
macro 'Display Serial Input…';
{Displays serial input in a window.}
var
x,y,width,height,count,line:integer;
ch:string; {actually one char}
BaudRate:string;
begin
RequiresVersion(1.48);
repeat
BaudRate:=Getstring('Baud Rate(1200, 2400, 9600 or 19200)','9600');
until (BaudRate='1200') or (BaudRate='2400') or(BaudRate='9600') or (BaudRate='19200');
OpenSerial(BaudRate);
width:=500;
height:=500;
SetNewSize(width,height);
SetForeground(255);
SetBackground(0);
MakeNewWindow('Serial Input');
SetCursor('Watch');
SetFont('Monaco');
SetText('With background; Left Justified');
SetFontSize(9);
MoveTo(8,8);
count:=0;
line:=0;
ShowMessage('Press mouse button to abort');
repeat
ch:=GetSerial;
if ch<>'' then begin
count:=count+1;
if (ord(ch)=13) or (count=80) then begin {13=Carriage Return}
writeln(ch);
count:=0
line:=line+1;
if line=54 then begin
Clear;
moveto(8,8);
line:=0;
end;
end else
write(ch);
end;
until button;
end;
procedure GetResponse;
{Gets responses to commands sent to the Newport 2-axis controller}
var
ch:string;
TimeOutTicks:integer;
TimeOUt:boolean;
begin
response:='';
TimeOutTicks:=TickCount+60; {1 sec.}
repeat
ch:=GetSerial;
if ord(ch)>=32 {ignore control characters}
then response:=concat(response,ch);
timeout:=TickCount>TimeOutTicks;
until (ch=return) or TimeOut;
if TimeOut then response:=concat(response,'[1 second time out]');
end;
macro 'Test Newport Motion Controller…[N]';
{
Simple macro to test the Newport PMC200-P programmable 2-axis
motion controller. Before starting, connect the PMC200-P to
the Mac's modem port. This can be done using a modem cable
and a 9-pin to 25-pin adapter consisting of a female 25-pin
connector wired back-to-back with a female 9-pin connector
acording to the table below.
9-pin 25-pin
2 <------> 3 (receive data)
3 <------> 2 (transmit data)
5 <------> 7 (signal ground)
Note: RS-232 INPUT ECHO MODE must be disabled. The phone
number for Newport is 714-253-1665.
}
var
cmd,response,linefeed,return:string;
begin
RequiresVersion(1.48);
linefeed:=chr(10);
return:=chr(13);
OpenSerial('9600 baud,no parity,eight data,one stop');
repeat
cmd:=GetString('Enter PMC200-P Command:','*IDN?');
repeat until GetSerial=''; {flush input buffer}
PutSerial(cmd,return,linefeed);
GetResponse;
PutMessage(response)
until button;
end;